<?php

declare(strict_types=1);

namespace DreamCat\StateMachine\HookInterface;

use DreamCat\StateMachine\Error\OperatorParamInvalidException;
use DreamCat\StateMachine\Popo\MachineData;

/**
 * 提交前调用的接口
 * @author vijay
 */
interface BeforeSubmitInterface
{
    /**
     * 提交前调用，主要应该是参数选择的合法性
     * @param MachineData $machineData 状态机
     * @param string $operatorKey 动作标识
     * @param array $operatorParam 动作参数
     * @return void
     * @throws OperatorParamInvalidException 检测不通过时抛出此异常
     */
    public function beforeSubmit(MachineData $machineData, string $operatorKey, array $operatorParam): void;
}

# end of file
